package com.hqd.jjvm.rtda.heap.state;

/**
 * 类加载状态
 */
public enum JClassState {
    /**
     * 已分配，还未链接
     */
    ALLOCATED,
    /**
     * 已加载并插入类体系，还未链接
     */
    LOADED,
    /**
     * 已成功链接，但还未初始化
     */
    LINKED,
    /**
     * 正在初始化
     */
    BEING_INITIALIZED,
    /**
     * 已成功初始化（这时成功时的最终状态）
     */
    FULLY_INITIALIZED,
    /**
     * 初始化失败
     */
    INITIALIZATION_ERROR;

    public boolean isEndLinked() {
        if (this.equals(ALLOCATED) || this.equals(LOADED)) {
            return false;
        }
        return true;
    }

    public boolean isInit() {
        return this.equals(FULLY_INITIALIZED);
    }
}
